package br.com.minhabiblia.view.componentes {
	
	import flash.display.DisplayObject;
	
	import mx.core.Application;
	import mx.core.IFlexDisplayObject;
	import mx.managers.CursorManager;
	import mx.managers.PopUpManager;
	import mx.controls.Alert;
	
	//Classe a ser utilizada para exibição do bloqueio
	public class MostraCursor
	{
		private static var mostraCursor:MostraCursor; //instancia classe para chamada estática
		public static var bloqueio:bloqueiaTela; //armazena bloqueio gerado
		
		//tipos de bloqueio
		public static const CURSOR_GRAVAR:int = 1;
		public static const CURSOR_EXCLUIR:int = 2;
		public static const CURSOR_PESQUISAR:int = 3;
		public static const CURSOR_PROGRESSO:int = 4;
		
		//construtor
		public function MostraCursor():void{
		}
		
		//inicia bloqueio
		public static function setBusyCursor(msg:String, objParent:Object, tipoEspera:int=0):void{
			if(bloqueio == null){ //caso não exista um bloqueio inicia um
				mostraCursor = new MostraCursor(); //cria instância
							
				bloqueio = bloqueiaTela(PopUpManager.createPopUp(DisplayObject(objParent), bloqueiaTela, true)); //cria bloqueio
				bloqueio.addEventListener("terminei", removeCursor);				//listener para remover bloqueio
				
				PopUpManager.centerPopUp(bloqueio);									//centraliza
				
				bloqueio.txtMensagem.text = msg.toUpperCase();									//mensagem a ser exibida
				
				CursorManager.setBusyCursor();										//exibe cursor ocupado padrão do Flex
			}
		}		
		
		public static function setaProgresso(valorTotal:Number, valorAtual:Number):void{
			bloqueio.pbProgresso.setProgress(valorAtual, valorTotal);
		}
		
		//remove bloqueio efetivamente
		private static function removeCursor(evt:Object):void{
			PopUpManager.removePopUp(bloqueio); //remove bloqueio
			CursorManager.removeBusyCursor();   //remove cursor de ocupado padrão do Flex
			
			bloqueio = null;					//mata instância do bloqueio
		}
		
		public static function removeBusyCursor():void{
			//previne inconsistências ao finalizar bloqueio
			if(bloqueio != null) {
				bloqueio.removePopUp();
			}
				
		}	
	}
}